<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><TITLE>
Hercules: Creating DASD
</TITLE>
<LINK REL=STYLESHEET TYPE="text/css" HREF="hercules.css">
<link rel="shortcut icon" href="images/favicon.ico" />
<link rel="icon" href="images/favicon.ico" />
</HEAD><BODY BGCOLOR="#ffffcc" TEXT="#000000" LINK="#0000A0" VLINK="#008040" ALINK="#000000">

<h1>Hercules Version 4: Creating DASD</h1>

<p>
This page describes various ways of creating and loading DASD
volumes for use with Hercules.

<p><hr>

<h2>Contents</h2>
<blockquote>
        <p>
                <a href="#prebuilt">Using pre-built DASD images</a>
        </p>
        <p>
                <a href="#loading">Creating, formatting, and loading DASD volumes</a>
        </p>
        <p>
                <a href="#PDS">Building a DASD volume from unloaded PDS files</a>
        </p>
        <p>
                <a href="#utilities">Other DASD utilities</a>
        </p>
</blockquote>

<p><hr><a name="prebuilt"></a>
<h2>Using pre-built DASD images</h2>
<p>
IBM distributes pre-built OS/390 and z/OS systems on two
different CD-ROM packages:
<blockquote>
    <dl>
    <dt><p><b>The OS/390 and z/OS Application Development CD (ADCD)</b>
    <dd>available only to members of IBM PartnerWorld for Developers,
    and
    <p>
    <dt><b>The OS/390 and z/OS DemoPkg</b>
    <dd><p>available only to IBM employees and qualified IBM Business Partners.
    </dl>
</blockquote>
<p>Both of these packages contain pre-built DASD image files
which simply need to be unzipped onto your hard drive.  The
unzipped images can be directly read by Hercules.
Be aware, however, that you cannot use the ADCD images because
the PartnerWorld scheme requires you to purchase or lease an IBM
approved machine in order to obtain the ADCD, and the software on
the ADCD is licensed for use only on the machine that it was
shipped with.
See IBM's
"<a href="http://www.ibm.com/servers/enable/site/zinfo/adcd.html">Enterprise server solutions</a>"
web page for more information.
<p>
If you want Hercules to be an approved machine so that you can
use the ADCD, then I suggest you lobby <b>IBM Developer Relations</b>
<!-- ===(fyolton&nbsp;&#064;&nbsp;us.ibm.com)=== -->
at the address given on their web page.
Different rules apply to the OS/390 and z/OS
DemoPkg CD which is available only to IBM employees and business
partners.  If you fall into this category then you probably know
what the rules are. I don't. &nbsp;<tt>:-(</tt>

<p><hr><a name="loading"></a>
<h2>Creating, formatting, and loading DASD volumes</h2>

<p><hr><a name="dasdinit"></a>
<h4>Creating an empty DASD volume</h4>
<p>
To create an empty DASD volume, simply run the <code>dasdinit</code> or
<b><code>dasdinit64</code></b> utility from your host system's shell (command prompt)
to create a file that emulates (represents) the empty DASD volume. If you
are going to be creating <a href="cckddasd.html">compressed dasd images</a>,
it is recommended that you use the new <b><code>dasdinit64</code></b> utility,
as it is able to create the emulated dasd image files in the new
<a href="hercrnot.html#CCKD64">CCKD64 format</a>, which are highly advantageous
over the old 32-bit CCKD images that plain <code>dasdinit</code> creates in that
it is able to create images that represent very large capacity DASDs.
<p>
The format of the command is:
<br><br>
<pre>
    Usage: <b>dasdinit64</b> [-options] filename devtype[-model] [volser] [size]
    Builds an empty dasd image file
    options:

      -z        build <a href="cckddasd.html"><b>compressed dasd image</b></a> file using zlib
      -bz2      build <a href="cckddasd.html"><b>compressed dasd image</b></a> file using bzip2
      -0        build <a href="cckddasd.html"><b>compressed dasd image</b></a> file with no compression
      -lfs      build a large (uncompressed) dasd file (if supported)
      -a        build dasd image file that includes alternate cylinders
                <i>(option ignored if size is manually specified)</i>
      -r        build 'raw' dasd image file
                <i>(no VOL1 or IPL track)</i>
      -b        make wait PSW in IPL1 record a BC-mode PSW
                <i>(default is EC-mode PSW)</i>
      -m        enable wait PSW in IPL1 record for machine checks
                <i>(default is disabled for machine checks)</i>
      -linux    null track images will look like Linux dasdfmt'ed images
                <i>(3390 device type only)</i>

      filename  name of dasd image file to be created
      devtype   CKD: 2305, 2311, 2314, 3330, 3340, 3350, 3375, 3380, 3390, 9345
                FBA: 0671, 3310, 3370, 9313, 9332, 9335, 9336

      model     device model (implies size) (opt)
      volser    volume serial number (1-6 characters)
                <i>(specified only if <b>'-r'</b> option is <b><u>not</u></b> used)</i>
      size      number of CKD cylinders or 512-byte FBA sectors
                <i>(required if model not specified, else optional)</i>
</pre>

<p><br>
Note that the defaults for the wait PSW written to the IPL1 record have changed
from earlier releases of Hercules.  In the past, the wait PSW created by dasdinit
was a BC-mode PSW enabled for machine check interrupts.  The current default for
the wait PSW is EC-mode, disabled for machine checks.  To obtain the earlier
behavior, run dasdinit with the "-b" and "-m" flags.
</p>
<a name="models">
<p>
The current list of device types and models supported is:
</p>
<pre>

              <b>CKD DEVICES

                               alt
        devtype-model    cyls  cyls</b>

        2305              [<b>*</b>]
        2305-1            48    6
        2305-2            96    12

        2311              [<b>*</b>]
        2311-1            200   2

        2314              [<b>*</b>]
        2314-1            200   3

        3330              [<b>*</b>]
        3330-1            404   7
        3330-2            808   7
        3330-11           808   7

        3340              [<b>*</b>]
        3340-1            348   1
        3340-35           348   1
        3340-2            696   2
        3340-70           696   2

        3350              [<b>*</b>]
        3350-1            555   5

        3375              [<b>*</b>]
        3375-1            959   1

        3380              [<b>*</b>]
        3380-1            885   1
        3380-A            885   1
        3380-B            885   1
        3380-D            885   1
        3380-J            885   1
        3380-2           1770   2
        3380-E           1770   2
        3380-3           2655   3
        3380-K           2655   3
        EMC3380K+        3339   3
        EMC3380K++       3993   3

        3390              [<b>*</b>]
        3390-1           1113   1
        3390-2           2226   1
        3390-3           3339   1
        3390-9          10017   3
        3390-27         32760   3
        3390-54         65520   3

        9345              [<b>*</b>]
        9345-1           1440   0
        9345-2           2156   0


             <b>FBA DEVICES

        devtype-model  blocks</b>

        3310              [<b>*</b>]
        3310-1         125664

        3370              [<b>*</b>]
        3370-Al        558000
        3370-B1        558000
        3370-A2        712752
        3370-B2        712752

        9313              [<b>*</b>]
        9313-1         246240

        9332              [<b>*</b>]
        9332-200       360036
        9332-400       360036
        9332-600       554800

        9335              [<b>*</b>]
        9335-1         804714

        9336              [<b>*</b>]
        9336-10        920115
        9336-20       1672881
        9336-25       1672881

        0671-08        513072
        0671           574560
        0671-04        624456

    [<b>*</b>] size may be specified else size defaults to the first listed model.
</pre>
<p>
<h4>Volumes exceeding 2GB</h4>
<p>
For regular (uncompressed) CKD volumes which exceed 2GB in size
(such as the 3390-3 and larger models) -- <i><u>and for which the
<b>-lfs</b> parameter was not specified</u></i> -- the DASDINIT /
DASDINIT64 program creates multiple files by appending the characters
<b>_1</b>, <b>_2</b>, <b>_3</b> etc.
to the file name specified on the command line.  These characters
are inserted before the first dot (<b>.</b>) after the last slash
(<b>/</b>).  If there is no dot, then the characters are appended
to the end of the name. Each file contains a whole number of cylinders.
 Hercules CKD support recognizes the files as belonging to a single
logical volume. Specify the full name of just the first file in the
Hercules configuration file (e.g. "<i>filename</i>_1").
<p>
<u>If the <b>-lfs</b> option <i>is</i> specified however</u>, then the output file is
a single large file which can be as large as your system supports.
<p>
The DASDINIT / DASDINIT64 program cannot create FBA volumes exceeding 2GB
unless the <b>-lfs</b> parameter is specified and <i>large file size</i>
is supported on your platform..

<h4>Examples</h4>
<p>
To create a 3330 model 1 CKD volume consisting of 404 cylinders
(plus 7 alternate cylinders too)
with volume serial number WORK01 in a file called
<b><i>work01.151</b></i>:
<pre>
    dasdinit64 -a work01.151 3330-1 work01
</pre>
<p>
To create a compressed 3350 CKD volume consisting of 560 cylinders
(555 cylinders plus the 5 alternate cylinders)
with volume serial number SYSRES in a file called
<b><i>dosvs34.24f</b></i>:
<pre>
    dasdinit64 -a -bz2 dosvs34.24f 3350-1 sysres
</pre>
<p>
To create a 3370 FBA volume with only 100000 sectors
(instead of the usual 558000 sectors)
with volume serial number WORK02 in a file called
<b><i>mini.work02.140</b></i>:
<pre>
    dasdinit64 mini.work02.140 3370 work02 100000
</pre>
<p>
To create a 3390 model 3 (triple density) CKD volume
of 3339 cylinders with volume serial number WORK03:
<pre>
    dasdinit64 triple.a88 3390-3 work03
</pre>
<p>
Because this volume exceeds 2GB, DASDINIT / DASDINIT64 will create two files
with <b><i>triple_1.a88</b></i> containing cylinders 0-2518 and
<b><i>triple_2.a88</b></i> containing cylinders 2519-3339.  However, if you
instead specify the <tt>-lfs</tt> option:
<pre>
    dasdinit64 -lfs triple.a88 3390-3 work03
</pre>
<p>
then DASDINIT /DASDINIT64 will create a single file <b><i>triple.a88</i></b>
containing all the cylinders.  Your platform must support <i>large
file sizes</i> to specify the <b>-lfs</b> option.

<h4>Formatting the empty DASD volume</h4>
<p>
After creating a DASD volume you can format it with a program
such as standalone IBCDASDI or ICKDSF.
<p>
Here is an example of the IBCDASDI control statements required
to initialize a 3330 volume:
<pre>
    WORK01 JOB  'INITIALIZE 3330 WORK VOLUME'
           MSG   TODEV=1052,TOADDR=009
           DADEF TODEV=3330,TOADDR=151,IPL=NO,VOLID=WORK01,BYPASS=YES
           VLD   NEWVOLID=WORK01,OWNERID=HERCULES
           VTOCD STRTADR=1,EXTENT=5
           END
</pre>
<p>
To run IBCDASDI, place the above statements in a file called
<b><i>init3330.txt</i></b> and start Hercules in S/370 mode with
a configuration file containing these statements:
<pre>
    CPUSERIAL  001234
    CPUMODEL   3145
    MAINSIZE   2
    CNSLPORT   1052
    ARCHLVL    S/370

    0009   1052
    000A   1442    ibcdasdi.rdr
    000C   1442    init3330.txt
    0151   3330    work01.151
</pre>
<p>
After IPLing from card reader device 00A, connect a telnet client
to port 1052, and press enter.  At the IBCDASDI prompt, enter the command:
<pre>
    input=1442 00c
</pre>

<h4>Loading the new DASD volume</h4>
<p>
Next, you need to create a full volume dump file of your chosen
<i>mainframe</i> dasd volume (converting it to AWSTAPE format) by
using the <b><i>tapeconv.jcl</i></b> job in the Hercules source
directory. You would run this JCL on your <i>mainframe</i>.
<p>
The resulting AWSTAPE mainframe file can then be downloaded in binary format
to your PC where Hercules is running, where it can then be defined as a
Hercules virtual tape drive in your Hercules configuration file.
<p>
A standalone program could then be IPLed on Hercules to restore the
volume image from the virtual tape onto the formatted Hercules DASD
volume.

<p><hr><a name="PDS"></a>
<h2>Building a DASD volume from unloaded PDS files</h2>
<h3>dasdload / dasdload64</h3>
<p>
The dasdload program can be run from your host system's shell (command
prompt) to create a new DASD image file and load it with data from unloaded
PDS files.
<p>
The format of the dasdload / dasdload64 command is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdload &nbsp;&nbsp;<i>[options]</i> <em>ctlfile outfile <i>[msglevel [maxdblk maxttr maxdscb]]</i></em></code><br>
    &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdload64 <i>[options]</i> <em>ctlfile outfile <i>[msglevel [maxdblk maxttr maxdscb]]</i></em></code>
<p>
where <em>[options]</em> can be:
<blockquote>
<dl>
    <dt><code><i>-z</i></code>
    <dd>Build compressed dasd image file using zlib.
    <dt><code><i>-bz2</i></code>
    <dd>Build compressed dasd image file using bzip2.
    <dt><code><i>-0</i></code>
    <dd>Build compressed dasd image file with no compression.
    <dt><code><i>-lfs</i></code>
    <dd>Create only one very large output file (can exceed 2G).
    <dt><code><i>-a</i></code>
    <dd>Build dasd image file that includes alternate cylinders.
    <dt><code><i>-b</i></code>
    <dd>For a volume without IPL text, make the wait PSW written to the IPL1
        record a BC-mode PSW.  The default is to make the wait PSW an EC-mode
        PSW.</dd>
    <dt><code><i>-m</i></code>
    <dd>For a volume without IPL text, make the wait PSW written to the IPL1
        record enabled for machine checks.  The default is to make the wait
        PSW disabled for machine checks.</dd>
<p>
    <dt><code><em>ctlfile</em></code>
    <dd>is the name of the control file which specifies the datasets
        that are to be loaded onto the newly-created volume
    <dt><code><em>outfile</em></code>
    <dd>is the name of the DASD image file to be created
<p>
    <dt><code><em>msglevel</em></code>
    <dd>is an optional number from 0 to 5 (default is 1) which controls the level of detail
        of the messages issued during the load.
    <dt><code><em>maxdblk</em></code>
    <dd>is the optional maximum number of DBLK table entries or 0 to use the default
    <dt><code><em>maxttr</em></code>
    <dd>is the optional maximum number of TTR table entries or 0 to use the default
    <dt><code><em>maxdscb</em></code>
    <dd>is the optional maximum number of DSCB table entries or 0 to use the default
</dl>
</blockquote>

<p>
<b>Note</b> that dasdload's default for the wait PSW written to the IPL1 record
<i>have changed from earlier releases of Hercules</i>.  In the past, the wait PSW created by dasdload
on volumes without IPL text was a BC-mode PSW enabled for machine check interrupts.
The current default for the wait PSW is EC-mode, disabled for machine checks.  To obtain
the earlier behavior, run dasdload with the "-b" and "-m" flags.
</p>

<h4>Control file</h4>
<p>
The control file required by the dasdload /dasdload64 program is an ASCII text
file consisting of a <em>volume statement</em> followed by one
<em>dataset statement</em> for each dataset to be created.
<p>
The format of the volume statement is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code><em>volser devtype</em>[-<em>model</em>] [<em>cyls</em> [<em>ipltext</em>] ]</code>
<p>where:
<blockquote>
<dl>
<dt><code><em>volser</em></code>
<dd>is the volume serial number for the newly-created volume
<dt><code><em>devtype</em></code>
<dd>is the emulated device type (2311, 2314, 3330, 3340, 3350, 3375,
    3380, or 3390) for the new volume.  FBA device types are not supported
    by the dasdload / dasdload64 program.  Model may be specified like
    <a href="#models">dasdinit / dasdinit64</a> above.
<dt><code><em>cyls</em></code>
<dd>is the size of the new volume in cylinders.
    If <code><em>cyls</em></code> is coded as <code>*</code>
    or as <code>0</code> or is omitted, then the default size
    for the device type and model is used.
<dt><code><em>ipltext</em></code>
<dd>is an optional parameter specifying the name of a file
    containing the IPL text which will be written to the volume.
    The file must be in the form of an object deck containing
    fixed length 80-byte EBCDIC records in the same format as
    expected by IBCDASDI or ICKDSF.
</dl>
</blockquote>
<p>
The format of a dataset statement is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code><em>dsname method units pri sec dir dsorg recfm
lrecl blksize keylen</em></code>
<p>where:
<blockquote>
<dl>
<dt><code><em>dsname</em></code>
<dd>is the dataset name
<dt><code><em>method</em></code>
<dd>is the dataset loading method which can be one of the following:
    <dl>
    <dt><code>XMIT <em>filename</em></code>
    <dd>the dataset is loaded from an unloaded PDS created by
        the TSO XMIT command
    <dt><code>SEQ <em>filename</em></code>
    <dd>the sequential dataset is loaded from a <b>binary</b> file.
        ascii/ebcdic translation is not currently supported.  Also,
        the dsorg must either be <em>PS</em> or <em>DA</em> and
        recfm must either be <em>F</em> or <em>FB</em>.
    <dt><code>EMPTY</code>
    <dd>the dataset is initialized with an end of file record
        (if DSORG is PS) or an empty PDS directory (if DSORG is PO)
    <dt><code>DIP</code>
    <dd>the dataset is initialized with a LOGREC header record
    <dt><code>CVOL</code>
    <dd>the dataset is initialized as an OS SYSCTLG containing
        the minimum entries needed to IPL an OS/360 system
    <dt><code>VTOC</code>
    <dd>specifies the size and location of the VTOC.  A dataset
        name must be coded on this statement, although it is not
        used.  If no VTOC statement is present, the VTOC will be
        placed after the last dataset on the volume and the size
        of the VTOC will be the minimum number of tracks necessary.
    </dl>
<dt><code><em>units</em></code>
<dd>is the space allocation units: <code>TRK</code> or <code>CYL</code>.
<dt><code><em>pri</em></code>
<dd>is the space allocation primary quantity
<dt><code><em>sec</em></code>
<dd>is the space allocation secondary quantity
<dt><code><em>dir</em></code>
<dd>is the number of directory blocks
<dt><code><em>dsorg</em></code>
<dd>is the dataset organization: <code>PS</code>, <code>PO</code>,
    <code>DA</code>, or <code>IS</code>,
<dt><code><em>recfm</em></code>
<dd>is the record format: <code>F</code>, <code>FB</code>, <code>FBS</code>,
    <code>V</code>, <code>VB</code>, <code>VBS</code>,
    or <code>U</code>.
<dt><code><em>lrecl</em></code>
<dd>is the logical record length
<dt><code><em>blksize</em></code>
<dd>is the block size
<dt><code><em>keylen</em></code>
<dd>is the key length
</dl>
</blockquote>
<p>All parameters except dsname and method are optional.
Defaults of zero are supplied for DCB parameters.  For datasets
loaded with the XMIT method, the DCB parameters are taken from
the unloaded PDS, and the minimum space allocation required to
load the dataset is used unless a larger quantity is specified.
If space allocation is omitted, the default is TRK 1 0 0.
If CYL is specified without any primary quantity then the default
space allocation is 1 cylinder or the minimum number of cylinders
required to load the dataset, whichever is larger.

<h4>Example 1:</h4>
<p>
To create a 2314 volume in a file called <b><i>sysres.230</i></b>
using the control file <b><i>sysres.plf</i></b> with message level 2:
<pre>
    dasdload64 sysres.plf sysres.230 2
</pre>

<p>
An example control file is shown below:
<pre>
    #
    # Pack layout file for MFT system residence volume
    #
    sysres 2314 * ieaipl00.rdr
    sys1.parmlib    xmit    /cdrom/os360/reslibs/parmlib.xmi
    sys1.imagelib   xmit    /cdrom/os360/reslibs/imagelib.xmi
    sysctlg         cvol    trk 1 0 0       ps f 256 256 8
    sysvtoc         vtoc    trk 5
    sys1.logrec     dip     trk 1 0 0
    sys1.nucleus    xmit    /cdrom/os360/reslibs/nucleus.xmi cyl
    sys1.svclib     xmit    /cdrom/os360/reslibs/svclib.xmi cyl
    sys1.sysjobqe   empty   cyl 2 0 0       da f 176 176 0
    sys1.dump       empty   cyl 10 0 0      ps u 0 3625 0
</pre>

<p>
<h4>Example 2:</h4>
To create a compressed 3390-3 volume in a file called
<b><i>linux.500</i></b> containing a bootable linux system for
linux/390 installation using the control file <b><i>linux.prm</i></b>:
<pre>
    dasdload64 -z linux.prm linux.500
</pre>
<p>
An example control file is shown below:
<pre>
    #
    #   Build a bootable linux disk
    #
    #   [Note: the dataset names (sys1.linux...) are hard-coded in
    #    linuxipl.obj and cannot be changed without rebuilding it]
    #
    linux  3390-3 * linuxipl.obj
    sys1.linux.parmfile    SEQ images/redhat.prm trk   1 0 0 ps fb 1024 1024
    sys1.linux.tapeipl.ikr SEQ images/kernel.img trk 200 0 0 ps fb 1024 1024
    sys1.linux.initrd      SEQ images/initrd.img trk 200 0 0 ps fb 1024 1024
</pre>

<h2>Fixing the XCTL tables in SVCLIB</h2>
<h3>DASDISUP: &nbsp; IEHIOSUP</h3>
<p>
On an OS/360 system, the Open/Close/EOV modules in SYS1.SVCLIB have
XCTL tables embedded within them.  These tables contain TTRs
pointing to other modules, and these TTRs need to be adjusted after
loading SVCLIB to DASD.  OS/360 provides a program called IEHIOSUP
to perform this function, but the catch-22 situation is that you can't run
IEHIOSUP until you have the system up and running, and you can't IPL
until you have fixed the XCTL tables!
<p>
To solve this dilemma, Hercules provides a utility program called <code>dasdisup</code>
which can be run from your host's command line after running either <code>dasdload</code>
or <code>dasdload64</code>.
<p>
The format of the <code>dasdisup</code> command is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdisup <em>outfile [sf=shadow-file-name]</em></code>
<p>
where
<blockquote>
<dl>
    <dt><code><em>outfile</em></code>
    <dd>is the name of the DASD image file to be updated
    <dt><code><em>shadow-file-name</em></code>
    <dd>(optional) is the name of the associated shadow file
        as specified in the Hercules config file
</dl>
</blockquote>
<p>
<em><b>Note:</b> do <u>not</u> use this procedure except on OS/360 IPL volumes!
Other operating systems do not have XCTL tables!</em>

<p><hr><a name="utilities"></a>
<h2>Other DASD utilities</h2>
<p>
These programs can be used to extract data from CKD DASD images
by means of commands issued from your host system's shell prompt
(i.e. command line).

<h3>DASDLS: &nbsp; List datasets on volume</h3>
<p>
DASDLS, written by Malcolm Beattie and enhanced by others, is a command
to let you list the names of the datasets contained in disk images.
<p>
The command format is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdls [-option [-option ... ]] ckdfile [sf=sfile]  [...]</em></code>
<p>
where <em>ckdfile</em> is the name of the file containing a CKD volume
and <em>sfile</em> (optional) is the name of the associated shadow file.
<p>
<em>-option</em> can be:
<blockquote>
<dl>
    <dt><code><i>-cchh</i></code><dd>Show begin/end CCHH of each extent
    <dt><code><i>-hdr</i></code><dd>show column headers
    <dt><code><i>-dsnl [=n]</i></code><dd>restrict dsname width
    <dt><code><i>-info</i></code><dd>show F1 info
    <dt><code><i>-caldt</i></code><dd>calendar date format
    <dt><code><i>-refdt</i></code><dd>show last-reference date
    <dt><code><i>-expdt</i></code><dd>show expiry date
    <dt><code><i>-yroffs [=n]</i></code><dd>year offset
</dl>
</blockquote>
<p>
<b>Note:</b> Multiple images can be processed in the same run,
but options must be specified ahead of each image.
<p>

<h3>DASDCAT: &nbsp; Display PDS members</h3>
<p>
DASDCAT, written by Malcolm Beattie, is a command to let you read
datasets from disk images.
<p>
The command format is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdcat -i <em>ckdfile [sf=shadow-file-name] dsname1 dsname2 ...</em> -i <em>ckdfile2 dsname10 ...</em></code>
<p>
where <em>ckdfile</em> is the name of the file containing a CKD volume,
<em>shadow-file-name</em> (optional) is the name of the associated shadow file,
and <em>dsname</em> can be a plain (non-partitioned) dataset name
(which is currently not handled) or of the form <em>pdsname</em>/<em>memname</em>
where <em>memname</em> can be:
<ul>
<li><b>PDS member name</b> (automatically uppercased),
    optionally followed by ":" and flags "a" or "c".
    <ul>
    <li>"c" means (c)ard images and turns a PDS members with a block
        size that's a multiple of 80 into multiple newline separated
        lines of 72 characters with EBCDIC converted to ASCII and with
        sequence numbers chopped off.
    <li>"a" means (a)sciify the member (but don't chop off sequence
        numbers or do the card image thing).
    </ul>
<li><b>?</b> (don't forget to quote it to avoid the shell globbing it)
    to list the names of all PDS members instead of outputting their
    contents.
<li><b>*</b> (again, quote it or backwhack it to avoid it being a glob)
    to output all members of the PDS instead of just a named one.
    This can optionally be followed with colon-then-flags, as above.
    Each member is preceded with a line "> Member: memname" and, if
    the "c" for card-images flags is used, each line of the members'
    contents is preceded with "| " to guarantee it can be
    distinguished from contents.
</ul>

<h4>Examples:</h4>
<pre>
    % dasdcat -i mvtres.350 sf= mvtres_1.350 'sys1.parmlib/?'

    ieabld00
    ieaige00
    ieaigg00
    ieaigg01
    iearsv00
    ikjprm00
    lnklst00
    presres
    smfdeflt

    % dasdcat -i mvtres.350 sys1.parmlib/smfdeflt:c

     OPT=2, SYSTEM,JOB AND STEP DATA COLLECTION
     EXT=YES, USER EXITS ARE TO BE TAKEN
     JWT=15, MAXIMUM CONTINUOUS WAIT TIME IS 15 MINS.PER STEP
     BUF=400, A MINIMUM 400 BYTE BUFFER IS DEFINED
     SID=6A, SYSTEM ID IS 6A
     MDL=65, MODEL IS MOD 65
     OPI=YES, PERMIT OPERATOR INTERVENTION
     MAN=ALL, RECORD USER AND SYSTEM RECORDS
     PRM=(,282,NL) SYS1.MAN ALLOCATED TO NON-LABELED TAPE

    % dasdcat -i mvtres.350 sys1.help/\*:c

    > Member ACCOUNT
    | )S SUBCOMMANDS -
    | ADD/A,CHANGE/C,DELETE/D,LIST/L,LISTIDS/LISTI,HELP/H,END
    | )F FUNCTION -
    | THE ACCOUNT COMMAND PROCESSOR INVOKES THE CONVERSATIONAL PROGRAMS
    ...
    > Member ALLOC
    | )F FUNCTION -
    | THE ALLOCATE COMMAND DYNAMICALLY DEFINES AND ALLOCATES A DATA SET
    | WITH OR WITHOUT AN ATTRIBUTE LIST OF DCB PARAMETERS
    | )X SYNTAX -
    | ALLOCATE DATASET('DSNAME'/*) FILE('DDNAME')
    ...
</pre>

<h3>DASDPDSU: &nbsp; Unload PDS members</h3>
<p>
DASDPDSU is a command which unloads PDS members from a disk image
and copies each member to a file <em>memname</em>.mac in the current
working directory.
<p>
The command format is:
<p> &nbsp; &nbsp; &nbsp; &nbsp; <code>dasdpdsu <em>ckdfile [sf=shadow-file-name] pdsname</em> [ASCII] [odir]</code>
<p>
where <em>ckdfile</em> is the name of a file containing a CKD
volume, <em>shadow-file-name</em> (optional) is the name of the associated
shadow file, and <em>pdsname</em> is the name of a PDS on that volume.
If the optional <b>ASCII</b> keyword is specified, the members will be
unloaded as ASCII variable length text files.  Otherwise the members
are unloaded as fixed length EBCDIC binary files. The optional <em>odir</em>
parameter is the name of the directory where the output files should be
placed. Otherwise if not specified they are created in the current directory.

<p><center><hr width=15% noshade></center>
<p>
If you have a question about Hercules, see the
<a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page.

<p><center><hr width=15% noshade>
<a href="##" onclick="history.go(-1)"><img src="images/back.gif" border=0 alt="back"></a>
<p class="lastupd"><script language="Javascript">
document.write( "Last updated " + document.lastModified + "" );
</script></p>
</BODY>
</HTML>
